﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SinacorWebTools.Entity
{
    [Serializable]
    public class Menu
    {
        private int _codigo;
        private string _descricao;
        private int _codigoMenuSuperior;
        private string _descricaoMenuSuperior;
        private string _siglaFuncao;
        private string _codigoSistema;
        private string _descricaoAssembly;
        private string _descricaoClasse;
        private string _bloqueado;
        private Entity.Funcao _funcao;

        [MapEntityData("CD_MENU")]
        public int Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

        [MapEntityData("DS_MENU")]
        public string Descricao
        {
            get { return _descricao; }
            set { _descricao = value; }
        }

        [MapEntityData("CD_MENUSUP")]
        public int CodigoMenuSuperior
        {
            get { return _codigoMenuSuperior; }
            set { _codigoMenuSuperior = value; }
        }

        [MapEntityData("DS_MENUSUP")]
        public string DescricaoMenuSuperior
        {
            get { return _descricaoMenuSuperior; }
            set { _descricaoMenuSuperior = value; }
        }

        [MapEntityData("CD_FUNCAO")]
        public string SiglaFuncao
        {
            get { return _siglaFuncao; }
            set { _siglaFuncao = value; }
        }

        [MapEntityData("CD_SISTEMA")]
        public string CodigoSistema
        {
            get { return _codigoSistema; }
            set { _codigoSistema = value; }
        }

        [MapEntityData("DS_ASSEMBLY")]
        public string DescricaoAssembly
        {
            get { return _descricaoAssembly; }
            set { _descricaoAssembly = value; }
        }

        [MapEntityData("DS_CLASSE")]
        public string DescricaoClasse
        {
            get { return _descricaoClasse; }
            set { _descricaoClasse = value; }
        }

        [MapEntityData("IN_BLOQUEIO")]
        public string Bloqueado
        {
            get { return _bloqueado; }
            set { _bloqueado = value; }
        }

        public Entity.Funcao Funcao
        {
            get { return _funcao; }
            set { _funcao = value; }
        }

        public Menu()
        { }

        public Menu(int codigo, string descricao)
        {
            this.Codigo = codigo;
            this.Descricao = descricao;
        }

        public Menu(int codigo,
                    string descricao,
                    int codigoMenuSuperior,
                    string descricaoMenuSuperior,
                    string codigoFuncao, 
                    string codigoSistema,
                    string descricaoAssembly,
                    string descricaoClasse,
                    string bloqueado)
        {
            this.Codigo = codigo;
            this.Descricao = descricao;
            this.CodigoMenuSuperior = codigoMenuSuperior;
            this.DescricaoMenuSuperior = descricaoMenuSuperior;
            this.SiglaFuncao = codigoFuncao;
            this.CodigoSistema = codigoSistema;
            this.DescricaoAssembly = descricaoAssembly;
            this.DescricaoClasse = descricaoClasse;
            this.Bloqueado = bloqueado;
        }
    }
}
